(1) Field of the Invention
The present invention relates to a matrix multiplier and a picture transforming coder using the matrix multiplier. In particular, the present invention is applicable to a coder and decoder for audio signals and standstill as well as moving picture information and relates to a matrix multiplier utilized in a transforming/coding unit for matrix multiplication of a coefficient matrix used in the coder by a signal matrix and a picture transforming coder utilizing the matrix multiplier.
(2) Description of the Prior Art
In many cases, a technique referred to hereafter as DCT (Discrete Cosine Transform) is used in an apparatus for efficiently coding a picture signal or the like. DCT is a kind of frequency transformation which is similar to Fourier transformation. For example, let input picture information be treated as a block of pixels comprising 8 horizontal rows and 8 vertical columns. Such a block of pixels is represented by a matrix [x] each element of which corresponds to a pixel. DCT results, or what is called DCT coefficients, are represented by a matrix [X]. Using transform coefficients [C] and its transposed matrix t[c], the relations between the matrices [x] and [X] are given by Equation (1). In many cases, DCT and inverse DCT processings are carried out in accordance with the matrix relations given by Equation 1.
Equation (1): EQU DCT [X]=[C].times.[].times..sup.[T C] EQU Inverse DCT []=.sup.T [C].times.[X ].times.[C]
where t[ ] denotes a transposed matrix and the matrix [C] is expressed by the following equation: ##EQU1##
FIG. 1 shows a general configuration of a DCT processing apparatus for executing DCT and inverse DCT manipulations. In the case of the DCT processing, the picture information matrix [x] is used as an input matrix 11. As for the inverse DCT processing, it is the DCT coefficient matrix [X] which is used as the input matrix 11. The input matrix 11 is multiplied by transform coefficients 12 stored in a coefficient bank 104 by means of a matrix multiplier (A) denoted by reference numeral 101. The results of the matrix multiplication are stored temporarily in a transpose buffer 102. The results stored in the transpose buffer 102 are further multiplied by transform coefficients 13 stored in a coefficient bank 105 by means of a matrix multiplier (B) denoted by reference numeral 103. The results of the matrix multiplication are obtained as an output matrix 14. In this case, the coefficient matrices 12 and 13 are the transform coefficients [C] and its transposed matrix t[C] respectively.
FIG. 2 shows a typical configuration of the conventional matrix multiplier for performing the DCT and inverse DCT manipulations. In other words, FIG. 2 shows the configuration of the matrix multiplier (A) or (B) denoted by reference numeral 101 or 103 in FIG. 1. Each multiplier 201 is used for multiplying an element on a row (or column) of an input matrix 21 by an element on a column (or row) of a transform coefficient matrix 23 coming from a transform coefficient generator 205. The result of the multiplication is stored in an accumulator 203 through an adder 202. The multiplication is repeated for all elements on each row (column) of the input matrix 21 and for all elements on each column (row) of the transform coefficient matrix 23 and the result of each multiplication is added to the contents of the accumulator 203. As all the elements are multiplied, the accumulators 203 are selected one after another by a selector 204 in order to output their contents sequentially as an output matrix 22.
A typical configuration of the multiplier 201 is shown in FIG. 3. For the Ith bit of a multiplier 32, a multiplicand 31 is arithmetic-left-shifted I times, where I=0 to n. Note that arithmetic-left-shifting the multiplicand 31 I times is equivalent to multiplying the multiplicand 31 by the Ith power of 2. If the Ith bit of the multiplier 32 is a `1` then the arithmetic-left-shifted result is selected by a selector 301 and added to an output by an adder 302. If the Ith bit of the multiplier 32 is a `0` however the arithmetic-left-shifted result is not selected by the selector 301 and, thus, not added to the output by tile adder 302.